// 题意：给定n个石头堆，每次可以选取一堆移除至少一个石子，
//       再可以选择将这堆剩余石头任意移动若干个到任意其余还有石头的堆中
//       （可以不移动），问在最好的策略下，是不是先手必胜。
//
// 题解：必败态是这样的局势，n为偶数且石头个数都成对出现。其余状态是必胜态。
//       首先对于一个必败态，一次移动肯定进入了必胜态，可以这样考虑：
//       i）如果移掉了一堆，那么n变成奇数，进入必胜态;
//       ii）否则，对于这堆对应相同的堆，这次移动当前堆数目肯定减小，
//           其余堆只会增加，所以也进入必胜态。
//       那么对于一个必胜态，我们一次移动可以进入必败态，
//       i）我们不管已经两两成对的堆，把不成对的堆拿出来单独考虑，肯定是取
//          个数最多的堆，如果现在堆数是奇数就得取完它。将这些排个序，
//          想成一个柱状图，那么每相邻两个柱子，低的要补成高的，差值投影到
//          最高的那个柱子发现肯定是够的，所以就这样补齐就好，至于多出来的，
//          直接移除掉就行。
//       考虑边界比如一堆，两堆相同的，两堆不同的就很容易看出哪个是必胜，
//       哪个是必败。
//
#include <iostream>
#include <vector>
#include <algorithm>

int const maxn = 16;
std::vector<int> da;
int n;

bool lose_state(std::vector<int> & a)
{
	std::sort(a.begin(), a.end());
	if (a.size() & 1) return false;
	for (int i = 0; i < (int)a.size(); i += 2)
		if (a[i] != a[i + 1]) return false;
	return true;
}

int main()
{
	std::ios::sync_with_stdio(false);
	da.reserve(maxn);
	while (std::cin >> n && n) {
		da.resize(n);
		for (int i = 0; i < n; i++) std::cin >> da[i];
		std::cout << !lose_state(da) << '\n';
	}
}

